package day06;

// 练习day06
// 最小时间差

import java.util.Arrays;
import java.util.List;

public class Main1 {
    public int findMinDifference(List<String> timePoints) {
        // 首先定义一个最小值，用来表示当前的最小时间差
        // 可以去整型最大值，后续就可以直接进行比较后替换
        int min = Integer.MAX_VALUE;

        // 定义一个数组，用来存储转换后的分钟数，长度是时间个数
        int[] minutes = new int[timePoints.size()];

        // 开始进行分钟的转换，并存入数组
        for (int i = 0; i < timePoints.size(); i++) {
            // 注意：前闭后开
            // get(i)是获取链表的i下标位置的String
            minutes[i] = Integer.valueOf(timePoints.get(i).substring(0,2))*60
                    + Integer.valueOf(timePoints.get(i).substring(3,5));
        }

        // 存入数组后进行升序排列
        Arrays.sort(minutes);

        // 遍历数组两两相邻比较，并计算出当前最小值
        for (int i = 0; i < minutes.length-1; i++) {
            min = Math.min(min,minutes[i+1]-minutes[i]);
        }

        // 单独处理最大最小，并与min比较确定最终min值
        return Math.min(min,24*60-(minutes[minutes.length-1]-minutes[0]));
    }
}
